package de.graph.document;

import java.util.Collection;
import java.util.Set;

public interface Document {

    public Long getId();
    
    public <ValueType> ValueType getProperty(String name);

    public <ValueType> ValueType getProperty(String name, ValueType defaultValue);

    public <ValueType> void setProperty(String name, ValueType value);
    
    public <ValueType> ValueType removeProperty(String name);

    public Set<String> getPropertyKeys();

    public Collection<Object> getPropertyValues();
    
    public <ValueType> Collection<ValueType> getPropertyValues(Class<ValueType> typeClass);
    
    public void clear();
}
